#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QFileDialog>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QDialog>
#include <QMediaPlaylist>
#include <QMediaPlayer>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

struct WidgetPrivate;
class Widget : public QWidget
{
    Q_OBJECT
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
protected:
    void onlinePlay();                          //在线播放
    void Sqlite();                              //数据库操作，数据的载入
    void Initqss(const QString &qsspath);
private slots:
    void on_search_for_clicked();               //搜索歌曲
    void recv_ack(QNetworkReply*);
    void showContextMenu(const QPoint& pos);
    void addToPlaylist();                       //把在线歌曲添加到我的歌单
    void showMysongMenu(const QPoint& pos);
    void removeToMysong();                      //把音乐移除歌单
    void LoopPlayback();                        //单曲循环和循环播放
    void soundmove();                           //声音的调节
    void on_cease_start_clicked();              //音乐的暂停和播放
    void on_localsong_clicked();                //本地音乐的加载
    void on_songswitch_clicked();               //单曲循环和循环播放的切换
    void on_nextsong_clicked();                 //下一首
    void on_previoussong_clicked();             //上一首
    void onMediaStatusChanged(QMediaPlayer::MediaStatus status);
    void on_volume_clicked(bool checked);       //声音
    void on_personalization_clicked();          //皮肤切换

private:
    Ui::Widget *ui;
    struct WidgetPrivate *p;                    //更好的封装性，隐藏内部实现
};
#endif // WIDGET_H
